package com.sunyur.tailor.channel.service.inner.order.service;

import com.sunyur.tailor.channel.common.middle.base.ChannelResult;
import com.sunyur.tailor.channel.service.inner.order.model.*;
import com.sunyur.tailor.channel.service.inner.order.param.*;

import java.util.List;

/**
 * @ClassName SunyurOrderService
 * @Description 订单接口
 * @Author hao.tian
 * @Date 2021/5/11
 * @Version v1.0
 */
public interface SunyurOrderService {
    /**
     * @Description 获取订单头信息接口
     * @Param getOrderHeadParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult<com.sunyur.tailor.channel.service.inner.searchorder.model.GetOrderHeadModel>
     * @Author hao.tian
     * @Date 2021/5/11
     * @Version v1.0
     */
    ChannelResult<GetOrderHeadModel> getOrderHeadInfo(GetOrderHeadParam getOrderHeadParam) throws Exception;

    /**
     * @Description 获取订单行信息接口
     * @Param getOrderListItemParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult<com.sunyur.tailor.channel.service.inner.searchorder.model.GetOrderListItemModel>
     * @Author hao.tian
     * @Date 2021/5/11
     * @Version v1.0
     */
    ChannelResult<List<GetOrderListItemModel>> getOrderListItem(GetOrderListItemParam getOrderListItemParam) throws Exception;
    /**
     * @Description 批量获取订单头信息接口
     * @Param getListOrderByCodesParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult<com.sunyur.tailor.channel.service.inner.searchorder.model.GetListOrderByCodesModel>
     * @Author hao.tian
     * @Date 2021/5/11
     * @Version v1.0
     */
    ChannelResult<List<GetListOrderByCodesModel>> geListOrderByCodes(GetListOrderByCodesParam getListOrderByCodesParam) throws Exception;
    /**
     * @Description 批量获取订单行信息接口
     * @Param getListOrderItemByCodesParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult<com.sunyur.tailor.channel.service.inner.searchorder.model.GetListOrderItemByCodesModel>
     * @Author hao.tian
     * @Date 2021/5/11
     * @Version v1.0
     */
    ChannelResult<List<GetListOrderItemByCodesModel>> geListOrderItemByCodes(GetListOrderItemByCodesParam getListOrderItemByCodesParam) throws Exception;
    /**
     * @Description 根据来源单号批量获取订单行信息接口
     * @Param  getListOrderItemBySourceCodesParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult<com.sunyur.tailor.channel.service.inner.searchorder.model.GetListOrderItemBySourceCodesModel>
     * @Author hao.tian
     * @Date 2021/5/11
     * @Version v1.0
     */
    ChannelResult<List<GetListOrderItemBySourceCodesModel>> getListOrderItemBySourceCodes(GetListOrderItemBySourceCodesParam getListOrderItemBySourceCodesParam) throws Exception;
    /**
     * @Description 根据来源行号批量获取订单行信息接口
     * @Param  getListOrderItemBySourceItemCodesParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult<com.sunyur.tailor.channel.service.inner.searchorder.model.GetListOrderItemBySourceItemCodesModel>
     * @Author hao.tian
     * @Date 2021/5/11
     * @Version v1.0
     */
    ChannelResult<List<GetListOrderItemBySourceItemCodesModel>> getlistOrderItemBySourceItemCodes(GetListOrderItemBySourceItemCodesParam getListOrderItemBySourceItemCodesParam) throws Exception;
    /**
     * @Description 批量修改订单
     * @Param  updateOrderListParamList
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @Author hao.tian
     * @Date 2021/5/13
     * @Version v1.0
     */
    ChannelResult updateOrderList(List<UpdateOrderListParam> updateOrderListParamList) throws Exception;
    /**
     * @Description 批量修改订单结算
     * @Param  updateOrdersParamList
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @Author hao.tian
     * @Date 2021/5/13
     * @Version v1.0
     */
    ChannelResult updateOrders(UpdateOrdersParam updateOrdersParam) throws Exception;
    /**
     * @Description 取消订单
     * @Param  cancelOrderParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @Author hao.tian
     * @Date 2021/5/13
     * @Version v1.0
     */
    ChannelResult cancleOrder(CancelOrderParam cancelOrderParam) throws Exception;
    /**
     * @Description 订单整单删除
     * @Param  deleteOrderByOrderCodesParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @Author hao.tian
     * @Date 2021/5/13
     * @Version v1.0
     */
    ChannelResult deleteOrderByOrderCodes(DeleteOrderByOrderCodesParam deleteOrderByOrderCodesParam) throws Exception;
    /**
     * @Description 根据订单行编号删除订单行来源信息
     * @Param  removeSourceByOrderItemCodesParam
     * @Return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @Author hao.tian
     * @Date 2021/5/13
     * @Version v1.0
     */
    ChannelResult removeSourceByOrderItemCodes(RemoveSourceByOrderItemCodesParam removeSourceByOrderItemCodesParam) throws Exception;

    /**
     * @Author XuHui
     * @Description 101-订单-采购商创建订单
     * @Wiki http://doc.sunyur.com/pages/viewpage.action?pageId=87490640
     * @Date 17:00 2021/12/30
     **/
    ChannelResult create(CreateOrderParam createOrderParam) throws Exception;


    /***
     * @Author pengbing
     * @Description //查询采购订单行相关数量/金额
     * @Date 10:53 2022/7/18
     * @Param [listOrderItemCountByCodesParam]
     * @return com.sunyur.tailor.channel.common.middle.base.ChannelResult<java.util.List<ListOrderItemCountByCodesModel>>
     **/
    ChannelResult<List<ListOrderItemCountByCodesModel>> getListOrderItemCountByCodes(ListOrderItemCountByCodesParam listOrderItemCountByCodesParam) throws Exception;

    /**
     * @return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @Author XuHui
     * @Description 101-订单-修改订单行【已上线】最大支持20长度，http://doc.sunyur.com/pages/viewpage.action?pageId=89587787
     * @Date 10:36 2021/9/28
     * @Param [updateOrderItemsParam]
     **/
    ChannelResult updateOrderItems(List<UpdateOrderItemsParam> updateOrderItemsParamList) throws Exception;

    /**
     * @return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @Author XuHui
     * @Description 101-订单-获取订单行相关数量[0217上线]，http://doc.sunyur.com/pages/viewpage.action?pageId=376177087
     * @Date 10:36 2021/9/28
     * @Param [updateOrderItemsParam]
     **/
    ChannelResult getOrderItemCount(GetListOrderItemByCodesParam getListOrderItemByCodesParam) throws Exception;

}

